iT邦幫忙

2025 iThome 鐵人賽

DAY 1
0
Software Development

從零開始,30天學會MongoDB系列 第 1

為什麼要學 MongoDB?NoSQL 與 SQL 的差異

  • 分享至 

  • xImage
  •  

SQL 資料庫缺點

在傳統的應用開發中,SQL 資料庫(例如 MySQL、PostgreSQL、Oracle)因為擁有嚴謹的 Schema 與 ACID 特性,非常適合金融、ERP、會計系統等需要嚴格一致性的場景。但隨著應用需求越來越多樣化,特別是在大數據、快速迭代與分散式架構的環境下,SQL 固定的表格結構往往顯得笨重。

SQL 資料庫簡述

SQL(Structured Query Language,結構化查詢語言)資料庫是一種 關聯式資料庫,以表格(Table)的形式存放資料,透過行(Row)與列(Column)的結構來管理資訊。常見的 SQL 資料庫系統包括 MySQL、PostgreSQL、Oracle Database、Microsoft SQL Server 等。

其核心特色是:
結構化:資料需先設計資料表與欄位,並定義資料型別與約束。
關聯性:不同資料表之間可透過「主鍵(Primary Key)」與「外鍵(Foreign Key)」建立關聯。
標準化語法:使用 SQL 指令進行新增(INSERT)、查詢(SELECT)、更新(UPDATE)、刪除(DELETE)等操作。
一致性與完整性:強調交易(Transaction)與資料一致性,適合需要嚴格規範的應用情境。

NoSQL 資料庫簡述

NoSQL(Not Only SQL)是一類 非關聯式資料庫,與傳統 SQL 關聯式資料庫不同,它不依賴固定的資料表與 Schema,能以更彈性的方式處理 非結構化或半結構化資料。NoSQL 資料庫通常具備 高擴展性、高效能、容易水平擴充 的特點,常見類型包含文件型(如 MongoDB)、鍵值型(如 Redis)、列式(如 Cassandra)、圖形型(如 Neo4j)。它特別適合 大數據處理、即時應用、高併發服務 等場景。

SQL vs NoSQL 對比表

項目 SQL 資料庫 (關聯式) NoSQL 資料庫 (以 MongoDB 為例)
資料模型 資料表 (Table)、列 (Row)、欄 (Column) 文件 (Document)、集合 (Collection)
結構 嚴格定義 Schema,需事先設計 Schema 彈性,可同一集合中存不同欄位
查詢語言 SQL (結構化查詢語言) 各家語法不同,MongoDB 使用 JSON-like 查詢
資料關聯 透過 JOIN 關聯多表 傾向透過嵌入 (Embed) 或參照 (Reference),少用 JOIN
擴充性 垂直擴充 (Scale-up),依賴更強硬體 水平擴充 (Scale-out),易於分散式架構
事務處理 強調 ACID (原子性、一致性、隔離性、持久性) 傳統上較弱,MongoDB 4.0 後支援多文件交易
儲存形式 結構化資料,固定格式 半結構化或非結構化 (JSON、BSON)
適用場景 金融系統、ERP、需要嚴格一致性的應用 高彈性、快速迭代的專案,如電商、社交平台、IoT

MongoDB 簡述

MongoDB 是一種 NoSQL 資料庫,以 文件(Document) 形式來儲存資料,每筆資料使用類似 JSON 的 BSON 格式,具有高度彈性與可擴展性。它是目前最受歡迎的 NoSQL 解決方案之一,廣泛應用於網路服務、即時分析、大數據與雲端應用。

面向 說明
類型 NoSQL 文件導向資料庫
資料格式 BSON(二進位 JSON),結構類似 JSON
Schema 無需固定 Schema,欄位可動態增減
核心特色 文件導向、高彈性、支援水平擴展(Sharding)、強大查詢與聚合(Aggregation Pipeline)、雲端友好(MongoDB Atlas)
適用場景 即時應用(聊天室、通知)、電商平台(商品/訂單)、大數據分析、快速原型開發
優勢 彈性高、容易擴展、資料格式直觀
與 SQL 差異 SQL 以表格存放,需固定 Schema;MongoDB 以文件存放,結構彈性更大

下一篇
MongoDB 安裝、基本 CRUD
系列文
從零開始,30天學會MongoDB3
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言